1. Technical Field
This disclosure relates to communication links, and more particularly to dynamic skew correction in multi-lane links.
2. Description of the Related Art
Many communication links employ multiple communication lanes that operate simultaneously. In such an environment, lane to lane skew may be problematic. The skew may be expressed as a difference in arrival time of bit streams on each lane at the receiver's side, even though the bit streams were transmitted simultaneously at the transmitter side. Generally, the skew may be classified as either static or dynamic and each may be caused by a variety of factors.
For example, one source of static skew may be wiring trace length variations between lanes, whether the traces are on a circuit board or an integrated circuit. Another source may be wire bond impedance variations between lanes. Another source of static skew may be variations in clock domain crossing latencies between lanes from recovered clock to local clock. Typically, static skew may be corrected using variety of well-known techniques. For example, during link training, only link training order sets (and no data) are transferred over the link. This makes static skew relatively straightforward to correct.
Dynamic skew, however, may be caused by variations in process, voltage, and temperature between lanes over time when the link is in the active state and transfers data packets. In addition, dynamic skew may be caused by different numbers of SKIP (SKP) ordered sets (SKP OS) between lanes introduced by either separate clock architectures, or by a channel retimer. Further, dynamic skew may be caused by variations in idle cycles introduced by per lane incoming bit stream decoders. The dynamic skew typically occurs during data packet transfer and may introduce cyclic redundancy code (CRC) errors, which may result in a link re-initialization, link re-training, or link recovery, all of which can degrade link performance.
Conventional methods to address dynamic skew are not optimal and include forcing a re-initialization, adding buffer hardware, forcing vendors of the retime circuit to guarantee that the number of SKP symbols within the SKP OS will always be the same across all transmit lanes, using side band signals, among others.